package com.zw.a.basic.a11.demo04_exercise;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

//Map集合案例: 通过字符串中每个字符的次数.
public class Demo05_代码实现_合并版 {
    public static void main(String[] args) {
        /*
            1.键盘录入一个字符串，要求统计字符串中每个字符出现的次数。
            2.举例：键盘录入“aababcabcdabcde” 在控制台输出：“a(5)b(4)c(3)d(2)e(1)”
         */
        //1. 定义Map集合, 字符做键, 该字符对应的次数作为值.    即:  HashMap<Character, Integer>    a:3, b:1
        Map<Character, Integer> map = new HashMap<>();
        //2. 提示录入, 然后遍历, 获取到每一个字符.
        System.out.println("请录入一个字符串: ");
        for (char ch : new Scanner(System.in).nextLine().toCharArray())
            //6. 判断该字符在双列集合中是否存在.
            map.put(ch, !map.containsKey(ch) ? 1 :  map.get(ch) + 1);

        //已知格式: a:3, b:1     目标格式: a(5)b(4)c(3)d(2)e(1)
        //7. 走到这里, Map集合记录的就是我们要的结果, 将其拼接成字符串.
        StringBuilder sb = new StringBuilder();
        for (Character key : map.keySet())
            sb.append(key).append("(").append( map.get(key)).append(")");
        //8. 打印结果.
        System.out.println(sb);
    }
}
